home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / utility3 / wtj008.zip / NOTBAD.ZIP / WINAPP.H < prev   
C/C++ Source or Header  |  1992-06-15  |  14KB  |  335 lines

  1. // winapp.h
  2.  
  3. #if !defined(WINAPP_H)
  4. #define WINAPP_H
  5.  
  6. #include<dos.h>
  7. #include<windows.h>
  8.  
  9. extern void *pWindow;
  10.  
  11. const unsigned WINAPP_RESERVED = sizeof(void *);
  12. inline void *GetPointer(HWND hWnd)
  13.     {
  14. #if defined(__SMALL__) || defined(__MEDIUM__)
  15.     return (void *)GetWindowWord(hWnd,0);
  16. #elif defined(__LARGE__) || defined(__COMPACT__) || defined(__HUGE__)
  17.     return (void *)GetWindowLong(hWnd,0);
  18. #else
  19.     #error Must use Small, Medium, Large, Compact or Huge models!
  20. #endif
  21.     }
  22.  
  23. inline void SetPointer(HWND hWnd, void *ptr)
  24.     {
  25. #if defined(__SMALL__) || defined(__MEDIUM__)
  26.     SetWindowWord(hWnd,0,(WORD)ptr);
  27. #elif defined(__LARGE__) || defined(__COMPACT__) || defined(__HUGE__)
  28.     SetWindowLong(hWnd,0,(LONG)ptr);
  29. #else
  30.     #error Must use Small, Medium, Large, Compact or Huge models!
  31. #endif
  32.     }
  33.  
  34. /* WINAPPLICATION:
  35. An object of this class is defined once for every application. It contains the
  36. items passed to WinMain, as well as access functions for returning them. The
  37. constructor initializes them.
  38. */
  39. extern HINSTANCE _hInstance, _hPrev;
  40. extern int _cmdShow;
  41. extern unsigned int _psp, _pszCmdline;
  42.  
  43. class WinApplication    // Windows application class
  44.     {
  45.     static HINSTANCE ApphInstance;
  46.     static HINSTANCE hPrevInstance;
  47.     static LPSTR lpszCmdLine;
  48.     static int nCmdShow;
  49. public:
  50.     WinApplication(void)
  51.         {
  52.         ApphInstance = _hInstance;
  53.         hPrevInstance = _hPrev;
  54.         lpszCmdLine = (LPSTR)MK_FP(_psp,_pszCmdline);
  55.         nCmdShow = _cmdShow;
  56.         }
  57.     static HINSTANCE GetInstance(void)     { return ApphInstance;  }
  58.     static HINSTANCE GetPrevInstance(void) { return hPrevInstance; }
  59.     static LPSTR GetCmdLine(void)       { return lpszCmdLine;   }
  60.     static int GetCmdShow(void)         { return nCmdShow;      }
  61.     static int Run(void);    // default message loop processing
  62.    };
  63.  
  64.    
  65. /* WINCLASS
  66. */
  67. const NOSTYLE = 0;
  68. const NOEXTRABYTES = 0;
  69.  
  70. class WinClass : public WNDCLASS
  71.     {
  72.     BOOL    class_registered;
  73. public:
  74.     WinClass(void);
  75.     void ClassRegister(void);
  76.     BOOL ClassRegistered(void);
  77.     };
  78.  
  79. /* WINHANDLE
  80. An object of this class is created with every instance of Window (below). It
  81. contains data that controls Window creation handling, as well as the window
  82. handle.
  83.  */
  84.  
  85. class WinHandle
  86.     {
  87.     HWND hWnd;
  88.     LPCSTR classname;
  89.     LPSTR windowname;
  90.     DWORD winstyle;
  91.     int upper_left_x;
  92.     int upper_left_y;
  93.     int winwidth;
  94.     int winheight;
  95.     HWND winParent;
  96.     HMENU menu;
  97.     HINSTANCE hInstance;
  98.     LPSTR lpParam;
  99.  
  100. public:
  101.     WinHandle(void);
  102.     HWND GetHandle(void) { return hWnd; }
  103.     BOOL Create(void);
  104.     
  105.     friend class Window;    // allow Window to modify members
  106.     };
  107.  
  108.  
  109. /* WINDOW
  110.  
  111. Every window is derived from this abstract class.
  112.  
  113. Every class derived from this one must have a WinClass object (or a pointer
  114. to one created by a derived class) and pass it back to Window.
  115.  
  116. And each must supply its own WndProc for the class.
  117. */
  118. class Window : public WinApplication, public WinClass
  119.     {
  120. public:
  121. //    HWND WHandle;
  122. private:
  123. #if defined(ARCHAIC)
  124.     static long far pascal WndProc(HWND, WORD, WORD, LONG);
  125. #endif
  126.     static LRESULT CALLBACK MDIChildWndProc(HWND, UINT, WPARAM, LPARAM);
  127.  
  128. protected:
  129.     WinHandle WHdl;
  130. private:
  131.     int     current_display;
  132.     int     previously_visible;
  133. //    long (far pascal *UserWndProc)(HWND, WORD, WORD, LONG);
  134.  
  135.     void    Show(void)
  136.         { previously_visible = ShowWindow(hWnd,current_display); }
  137.     void SetClassWinXbytes(int xtrabytes)    
  138.         { cbWndExtra = xtrabytes; }
  139.  
  140. protected:
  141.     WORD wParam;
  142.     LONG lParam;
  143.     WORD msg;
  144.     HWND hWnd;
  145.     LONG MsgReturnValue;
  146.     BOOL UserMessageUsed;
  147.  
  148. public:
  149.     Window(char *winname);
  150.         // displays window and creates if not already created
  151.     BOOL Display(void);
  152.     BOOL Display(int display_style);
  153.     BOOL ClassRegistered(void);
  154.         // should call SetClassInstance and SetClassName if not called
  155.     void RegisterMDIChild(void);
  156.     void Register(void);
  157.     BOOL Create(void);
  158.     HWND GetHandle(void)        { return WHdl.hWnd;                 }
  159.  
  160.     void Hide(void)             { Display(SW_HIDE);                 }
  161.     void Minimize(void)         { Display(SW_MINIMIZE);             }
  162.     void Maximize(void)         { Display(SW_SHOWMAXIMIZED);        }
  163.         // displays window in original size and position
  164.     void Normalize(void)        { Display(SW_SHOWNORMAL);           }
  165.     void DefaultDisplay(void)   { current_display = GetCmdShow();   }
  166.     void Paint(void);
  167.     void Update(void)           { UpdateWindow(hWnd);            }
  168.  
  169.             // vocab of functions for modifying the registration info
  170.     void SetClassInstance(void)         { hInstance = GetInstance();    }
  171.     void SetClassName(LPSTR classname)  { lpszClassName = classname;    }
  172.     void SetClassStyle(unsigned newstyle)   { style = newstyle;         }
  173.     void AddClassStyle(unsigned addstyle)   { style |= addstyle;        }
  174. //    void SetClassWinProc(long (FAR PASCAL *lpfnWndProc)(HWND, unsigned, 
  175. //        WORD, LONG))            {   UserWndProc = lpfnWndProc;      }
  176.     void AddClassWinXbytes(int xtrabytes)   { cbWndExtra += xtrabytes;  }
  177.     void SetClassIcon(LPSTR iconname);
  178.     void SetClassBackGround(HBRUSH handle)  {   hbrBackground = handle; }
  179.  
  180.     LPCSTR GetClassName(void)            { return lpszClassName;         }
  181.     void SetClassMenu(LPSTR menuname)   {   lpszMenuName = menuname;    }
  182.  
  183.         // vocab of functions for modifying the create info
  184.     void SetWinClassName(LPCSTR classname)   { WHdl.classname = classname;}
  185.     void SetWinName(LPSTR winname)  { WHdl.windowname = winname;        }
  186.     LPSTR GetWinName(void)          { return WHdl.windowname;           }
  187.     void SetWinStyle(DWORD dword)   { WHdl.winstyle = dword;            }
  188.     void AddWinStyle(DWORD dword)   { WHdl.winstyle |= dword;           }
  189.     void SetWinX(int x)             { WHdl.upper_left_x = x;            }
  190.     void SetWinY(int y)             { WHdl.upper_left_y = y;            }
  191.     void SetWinWidth(int width)     { WHdl.winwidth = width;            }
  192.     void SetWinHeight(int height)   { WHdl.winheight = height;          }
  193.     void SetWinParent(HWND hWnd)    { WHdl.winParent = hWnd;            }
  194.     void SetWinMenu(HMENU hmenu)    { WHdl.menu = hmenu;                }
  195.     void SetWinInstance(HINSTANCE hinst){ WHdl.hInstance = hinst;          }
  196.     void SetWinParams(LPSTR param)  { WHdl.lpParam = param;             }
  197.  
  198.     void pascal DWP(void);
  199.     virtual void UserMessages(void)         {};
  200.     virtual void WMNULL(void)                {     DWP();    }
  201.     virtual void WMCREATE(void)                {     DWP();    }
  202.     virtual void WMDESTROY(void)            {     DWP();    }
  203.     virtual void WMMOVE(void)                {     DWP();    }
  204.     virtual void WMSIZE(void)                {     DWP();    }
  205.     virtual void WMACTIVATE(void)            {     DWP();    }
  206.     virtual void WMSETFOCUS(void)            {     DWP();    }
  207.     virtual void WMKILLFOCUS(void)          {     DWP();    }
  208.     virtual void WMENABLE(void)                {     DWP();    }
  209.     virtual void WMSETREDRAW(void)          {     DWP();    }
  210.     virtual void WMSETTEXT(void)            {     DWP();    }
  211.     virtual void WMGETTEXT(void)            {     DWP();    }
  212.     virtual void WMGETTEXTLENGTH(void)        {     DWP();    }
  213.     virtual void WMPAINT(void)                {     DWP();    }
  214.     virtual void WMCLOSE(void)                {     DWP();    }
  215.     virtual void WMQUERYENDSESSION(void)    {     DWP();    }
  216.     virtual void WMQUIT(void)                {     DWP();    }
  217.     virtual void WMQUERYOPEN(void)            {     DWP();    }
  218.     virtual void WMERASEBKGND(void)            {     DWP();    }
  219.     virtual void WMSYSCOLORCHANGE(void)        {     DWP();    }
  220.     virtual void WMENDSESSION(void)            {     DWP();    }
  221.     virtual void WMSHOWWINDOW(void)            {     DWP();    }
  222.     virtual void WMCTLCOLOR(void)            {     DWP();    }
  223.     virtual void WMWININICHANGE(void)        {     DWP();    }
  224.     virtual void WMDEVMODECHANGE(void)      {     DWP();    }
  225.     virtual void WMACTIVATEAPP(void)        {     DWP();    }
  226.     virtual void WMFONTCHANGE(void)            {     DWP();    }
  227.     virtual void WMTIMECHANGE(void)            {     DWP();    }
  228.     virtual void WMCANCELMODE(void)            {     DWP();    }
  229.     virtual void WMSETCURSOR(void)            {     DWP();    }
  230.     virtual void WMMOUSEACTIVATE(void)      {     DWP();    }
  231.     virtual void WMCHILDACTIVATE(void)      {     DWP();    }
  232.     virtual void WMQUEUESYNC(void)            {     DWP();    }
  233.     virtual void WMGETMINMAXINFO(void)      {     DWP();    }
  234. //    virtual void WMPAINTICON(void)            {     DWP();    }
  235.     virtual void WMICONERASEBKGND(void)        {     DWP();    }
  236.     virtual void WMNEXTDLGCTL(void)            {     DWP();    }
  237.     virtual void WMSPOOLERSTATUS(void)      {     DWP();    }
  238.     virtual void WMDRAWITEM(void)            {     DWP();    }
  239.     virtual void WMMEASUREITEM(void)        {     DWP();    }
  240.     virtual void WMDELETEITEM(void)            {     DWP();    }
  241.     virtual void WMVKEYTOITEM(void)            {     DWP();    }
  242.     virtual void WMCHARTOITEM(void)            {     DWP();    }
  243.     virtual void WMSETFONT(void)            {     DWP();    }
  244.     virtual void WMGETFONT(void)            {     DWP();    }
  245.     virtual void WMQUERYDRAGICON(void)      {     DWP();    }
  246.     virtual void WMCOMPAREITEM(void)        {     DWP();    }
  247.     virtual void WMCOMPACTING(void)            {     DWP();    }
  248.     virtual void WMNCCREATE(void)            {     DWP();    }
  249.     virtual void WMNCDESTROY(void)            {     DWP();    }
  250.     virtual void WMNCCALCSIZE(void)            {     DWP();    }
  251.     virtual void WMNCHITTEST(void)            {     DWP();    }
  252.     virtual void WMNCPAINT(void)            {     DWP();    }
  253.     virtual void WMNCACTIVATE(void)            {     DWP();    }
  254.     virtual void WMGETDLGCODE(void)            {     DWP();    }
  255.     virtual void WMNCMOUSEMOVE(void)        {     DWP();    }
  256.     virtual void WMNCLBUTTONDOWN(void)      {     DWP();    }
  257.     virtual void WMNCLBUTTONUP(void)        {     DWP();    }
  258.     virtual void WMNCLBUTTONDBLCLK(void)    {     DWP();    }
  259.     virtual void WMNCRBUTTONDOWN(void)        {     DWP();    }
  260.     virtual void WMNCRBUTTONUP(void)        {     DWP();    }
  261.     virtual void WMNCRBUTTONDBLCLK(void)    {     DWP();    }
  262.     virtual void WMNCMBUTTONDOWN(void)        {     DWP();    }
  263.     virtual void WMNCMBUTTONUP(void)        {     DWP();    }
  264.     virtual void WMNCMBUTTONDBLCLK(void)    {     DWP();    }
  265.     virtual void WMKEYFIRST(void)            {     DWP();    }
  266.     virtual void WMKEYDOWN(void)            {     DWP();    }
  267.     virtual void WMKEYUP(void)                {     DWP();    }
  268.     virtual void WMCHAR(void)                {     DWP();    }
  269.     virtual void WMDEADCHAR(void)            {     DWP();    }
  270.     virtual void WMSYSKEYDOWN(void)            {     DWP();    }
  271.     virtual void WMSYSKEYUP(void)            {     DWP();    }
  272.     virtual void WMSYSCHAR(void)            {     DWP();    }
  273.     virtual void WMSYSDEADCHAR(void)        {     DWP();    }
  274.     virtual void WMKEYLAST(void)            {     DWP();    }
  275.     virtual void WMINITDIALOG(void)            {     DWP();    }
  276.     virtual void WMCOMMAND(void)            {     DWP();    }
  277.     virtual void WMSYSCOMMAND(void)            {     DWP();    }
  278.     virtual void WMTIMER(void)                {     DWP();    }
  279.     virtual void WMHSCROLL(void)            {     DWP();    }
  280.     virtual void WMVSCROLL(void)            {     DWP();    }
  281.     virtual void WMINITMENU(void)            {     DWP();    }
  282.     virtual void WMINITMENUPOPUP(void)      {     DWP();    }
  283.     virtual void WMMENUSELECT(void)            {     DWP();    }
  284.     virtual void WMMENUCHAR(void)            {     DWP();    }
  285.     virtual void WMENTERIDLE(void)            {     DWP();    }
  286.     virtual void WMMOUSEFIRST(void)            {     DWP();    }
  287.     virtual void WMMOUSEMOVE(void)            {     DWP();    }
  288.     virtual void WMLBUTTONDOWN(void)        {     DWP();    }
  289.     virtual void WMLBUTTONUP(void)            {     DWP();    }
  290.     virtual void WMLBUTTONDBLCLK(void)      {     DWP();    }
  291.     virtual void WMRBUTTONDOWN(void)        {     DWP();    }
  292.     virtual void WMRBUTTONUP(void)            {     DWP();    }
  293.     virtual void WMRBUTTONDBLCLK(void)      {     DWP();    }
  294.     virtual void WMMBUTTONDOWN(void)        {     DWP();    }
  295.     virtual void WMMBUTTONUP(void)            {     DWP();    }
  296.     virtual void WMMBUTTONDBLCLK(void)      {     DWP();    }
  297.     virtual void WMMOUSELAST(void)            {     DWP();    }
  298.     virtual void WMPARENTNOTIFY(void)        {     DWP();    }
  299.     virtual void WMMDICREATE(void)            {     DWP();    }
  300.     virtual void WMMDIDESTROY(void)            {     DWP();    }
  301.     virtual void WMMDIACTIVATE(void)        {     DWP();    }
  302.     virtual void WMMDIRESTORE(void)            {     DWP();    }
  303.     virtual void WMMDINEXT(void)            {     DWP();    }
  304.     virtual void WMMDIMAXIMIZE(void)        {     DWP();    }
  305.     virtual void WMMDITILE(void)            {     DWP();    }
  306.     virtual void WMMDICASCADE(void)            {     DWP();    }
  307.     virtual void WMMDIICONARRANGE(void)        {     DWP();    }
  308.     virtual void WMMDIGETACTIVE(void)        {     DWP();    }
  309.     virtual void WMMDISETMENU(void)            {     DWP();    }
  310.     virtual void WMCUT(void)                {     DWP();    }
  311.     virtual void WMCOPY(void)                {     DWP();    }
  312.     virtual void WMPASTE(void)                {     DWP();    }
  313.     virtual void WMCLEAR(void)                {     DWP();    }
  314.     virtual void WMUNDO(void)                {     DWP();    }
  315.     virtual void WMRENDERFORMAT(void)        {     DWP();    }
  316.     virtual void WMRENDERALLFORMATS(void)    {     DWP();    }
  317.     virtual void WMDESTROYCLIPBOARD(void)    {     DWP();    }
  318.     virtual void WMDRAWCLIPBOARD(void)        {     DWP();    }
  319.     virtual void WMPAINTCLIPBOARD(void)        {     DWP();    }
  320.     virtual void WMVSCROLLCLIPBOARD(void)    {     DWP();    }
  321.     virtual void WMSIZECLIPBOARD(void)        {     DWP();    }
  322.     virtual void WMASKCBFORMATNAME(void)    {     DWP();    }
  323.     virtual void WMCHANGECBCHAIN(void)        {     DWP();    }
  324.     virtual void WMHSCROLLCLIPBOARD(void)    {     DWP();    }
  325.     virtual void WMQUERYNEWPALETTE(void)    {     DWP();    }
  326.     virtual void WMPALETTEISCHANGING(void)  {     DWP();    }
  327.     virtual void WMPALETTECHANGED(void)        {     DWP();    }
  328.  
  329.     friend LRESULT CALLBACK DispatchMessage(HWND, UINT, WPARAM, LPARAM);
  330.     };
  331. #endif
  332.  
  333.  
  334.  
  335.